/**
 * 若干个询问，每次问[s, e]之间的整数有多少个满足 f(x) >= 2x
 * 其中 f(x) 是x的所有因数之和
 * e在1E6
 *  
 * 直接用筛法求出1E6以内所有数的因子和
 * 然后再做一个前缀和即可在O(1)时间内回答每一个询问
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;

vector<llt> Fac;
vector<int> S;

void work(){
    int a, b; cin >> a >> b;
    cout << S[b] - S[a - 1] << "\n";
    return; 
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    Fac.assign(1000000 + 1, 0);
    for(int i=1;i<=1000000;++i){
        for(int j=i;j<=1000000;j+=i){
            Fac[j] += i;
        }
    }

    S.assign(1000000 + 1, 0);
    for(int i=1;i<=1000000;++i){
        S[i] = S[i - 1];
        if(i + i <= Fac[i]) ++ S[i];
    }

    int nofkase = 1;
    cin >> nofkase;
    while(nofkase--) work();	
    return 0;
}